var express = require('express');
var router = express.Router();
var sql = require('./../sql');
var Pro = require('./../sql/col/pros');
router.get('/', function(req, res, next) {
  res.send('分类相关接口');
});
/**
 * @api {get} api/category/getCategory 获取分类
 * @apiDescription 获取分类
 * @apiGroup category
 * @apiSuccessExample { json } Success-Response:
 * res.send({
      code: '200',
      message: '获取分类',
      data
    });
 * @apiSampleRequest /api/category/getCategory
 * @apiVersion 1.0.0
 */
router.get('/getCategory', function(req, res, next) {
  // 1.查询产品的数据库，检索出所有的产品的分类，然后去重（---只适用于我们现在的项目----真实项目中可能有专门的分类数据库
  sql.distinct(Pro, 'type').then(data => {
    res.send({
      code: '200',
      message: '获取分类',
      data
    });
  })
});

/**
 * @api {get} api/category/getCategoryBrand 获取分类下的品牌
 * @apiDescription 获取分类下的品牌
 * @apiGroup category
 * @apiParam { string } type 分类
 * @apiSuccessExample { json } Success-Response:
 * res.send({
      code: '200',
      message: '获取分了下的品牌数据',
      data
    });
 * @apiSampleRequest /api/category/getCategoryBrand
 * @apiVersion 1.0.0
 */
router.get('/getCategoryBrand', function(req, res, next) {
  // 1.接收分类的数据，依据分类查询数据，确定显示的字段
  const { type } = req.query
  // 2.查询分类类型为type的数据，只显示brand 和 brandimg
  sql.find(Pro, { type }, { _id: 0, brand: 1, brandimg: 1}).then(data => {
    // 3.对象数组去重
    var obj = {};
    data = data.reduce(function(item, next) {
       obj[next.brand] ? '' : obj[next.brand] = true && item.push(next);
       return item;
    }, []);
    res.send({
      code: '200', 
      message: '获取分了下的品牌数据',
      data
    })
  })
});

/**
 * @api {get} api/category/getCategoryBrandList 获取当前分类下当前品牌的产品数据
 * @apiDescription 获取当前分类下当前品牌的产品数据
 * @apiGroup category
 * @apiParam { string } type 分类
 * @apiParam { string } brand 品牌
 * @apiSuccessExample { json } Success-Response:
 * res.send({
      code: '200',
      message: '获取当前分类下当前品牌的产品数据',
      data
    });
 * @apiSampleRequest /api/category/getCategoryBrandList
 * @apiVersion 1.0.0
 */
router.get('/getCategoryBrandList', function(req, res, next) {
  // 1.接收分类以及品牌
  const { type, brand } = req.query
  // 2.查询数据
  sql.find(Pro, { type, brand }, { _id: 0 }).then(data => {
    res.send({
      code: '200', 
      message: '获取当前分类下当前品牌的产品数据',
      data
    })
  })
});

/**
 * @api {get} api/category/getTypeProList 获取当前分类下的产品数据
 * @apiDescription 获取当前分类下的产品数据
 * @apiGroup category
 * @apiParam { string } type 分类
 * @apiSuccessExample { json } Success-Response:
 * res.send({
      code: '200',
      message: '获取当前分类下的产品数据',
      data
    });
 * @apiSampleRequest /api/category/getTypeProList
 * @apiVersion 1.0.0
 */
router.get('/getTypeProList', function(req, res, next) {
  // 1.接收分类以及品牌
  const { type } = req.query
  // 2.查询数据
  sql.find(Pro, { type }, { _id: 0 }).then(data => {
    res.send({
      code: '200', 
      message: '获取当前分类下的产品数据',
      data
    })
  })
});

module.exports = router;
